This invention relates generally to database upgrades, and more particularly to methods for reliably transforming system metadata in a massively parallel shared data store.
Software upgrades from one version of software to another are performed periodically in database systems. It is common in upgrades that internal structures are changed from one software release to another to expose new functionality. This means that the internal structures must be transformed from one state to a new state. Since the internal structures are established by system metadata, this involves transforming the system metadata. Metadata is critical to the function of a shared data store. It characterizes the logic structure of the underlying user data, and determines the system behavior, which can be changed by altering the metadata. System metadata is stored at each system node in a catalog. Bootstrap metadata is that metadata which is needed at certain times, such as at system start, stop and reconfiguration. It provides a list of elements such as internal tables that are necessary for starting, stopping the system or for transitioning states. The bootstrap metadata of a shared data store may change from one software release to another. In order to upgrade from one release to another, a user must upgrade the shared data store. The problem is how to accomplish this reliably.
For shared data stores hosting relatively small amounts of data, such as many transaction processing systems, the most practical and reliable way to upgrade the software is to extract the data from the data store, store it in an intermediate format, and then reload it into the shared data store using the new release of the software. However, for large massively parallel shared data stores which may store an extremely large amount of data, such as a petabyte (1000 terabytes) or more of data, distributed across a cluster of processing nodes, this is impractical because an amount of data this large cannot be extracted to any particular point in intermediate form. Even if it could, the time to do so would be prohibitive. Accordingly, it is necessary to upgrade the data in place on disk.
Some database vendors provide a low level program as a software upgrade tool to update the data in place. However, this approach is extremely error-prone. If there is a bug in the upgrade tool, or if there's an unexpected event in the upgrade process, the system may be left stuck in an indeterminate state midway in the upgrade process without any way of going back to the original configuration or going forward to the upgraded configuration. Essentially, the system is corrupted at this point.
There's a need for an upgrade process that addresses the foregoing problems and other known problems by providing a reliable and secure in-place bootstrap metadata transformation process in a parallel shared data store that allows users to easily upgrade to new software releases. It is to these ends that the present invention is directed.